The speed of network connections (e.g., Ethernet connections) to which a computer server may be connected is increasing. For example, computer servers may be connected via a networking adapter (e.g., Ethernet adapter) to Ethernet connections of 100 Mbps, 1 Gbps or 10 Gbps. In an attempt to fully utilize such a high-speed connection to which a network device may be connected, networking adapters, such as a Peripheral Component Interconnect (PCI) adapter, have been improved. More specifically, the operating speed of a chip included in the adapter and/or the speed of the adapter has been increased. For example, a server connected to a 10 Gbps local area network (LAN) may include a PCI-X 10 Gbps Ethernet adapter for receiving frames or packets from the LAN and/or transmitting frames or packets to the LAN. However, such a server may include a single processor. Typically, a server with a single processor may not drive a 10 Gbps Ethernet adapter at full speed. Consequently, the number of processors that may be included in a server has been increased. Further, adapters which support multiple queues (e.g., transmit and/or receive queues) have been developed. A server, which includes multiple processors, may include such an adapter. While executing instructions, the processors may employ threads, each of which may use a queue. Therefore, each processor may use its own transmit and/or receive queue, for example, to transmit and/or receive frames or packets. Such a server may include an adapter that performs receive frame processing based on frame size or IP differentiated services parameters of the received frames. However, such an adapter is not optimally designed for use in a multiple logical partition (LPAR) server.
On a logically partitioned server, each logical partition uses either a portion of one physical processor, one physical processor or multiple physical processors. Each logical partition uses a portion of the server main memory. A Hypervisor is a firmware layer that divides up processors and main memory among multiple logical partitions. A Hypervisor can also provide a command response queue allowing the multiple partitions to communicate. The Hypervisor can support data copies between partition memory (registered memory by the operating system to allow data copies).
An adapter may transfer data to or from adapter memory (e.g., an adapter cache memory) from or into main memory (e.g., a portion of main memory allocated to serve as a partition memory), respectively. For example, a direct memory access (DMA) may be performed by the adapter to copy data to or from adapter memory (e.g., an adapter cache memory) from or into main memory (e.g., a portion of main memory allocated to serve as a partition memory), respectively. The DMA operation is performed by adapter hardware. The main server processor may not be involved in the DMA operation. Terms such as “DMA”, “DMAing”, “DMAed”, etc., are used herein to represent the performance of a direct memory access (e.g., by the adapter). Terms such as “transfer”, “transferring”, “transferred”, etc., as used herein, include “DMA”, “DMAing”, “DMAed”, etc., respectively.
Other servers, which include multiple processors and an adapter, which supports multiple queues, may include multiple logical partitions. However, only one partition includes a transmit queue and a receive queue. For example, a hosting partition, which controls (e.g., owns) the adapter, may include the transmit and receive queues. Therefore, all frames or packets received by the server are received by a single partition (e.g., the hosting partition), which must perform a store-and-forward operation to route the frames or packets received to an appropriate partition (e.g., for processing). Because all frames or packets received by and/or transmitted from the server go through a single partition, the single partition may receive numerous interrupts from the adapter, copy numerous frames or packets to different partitions, and/or perform context switching between partitions. Such processing overhead of the single partition, which includes the transmit and receive queues, increases delays and processor utilization such that the speed at which the server drives the adapter is reduced, and therefore, the speed with which frames or packets may be received by and/or transmitted from the server is reduced.
Methods and apparatus are desired for sharing an Ethernet adapter among multiple logical partitions.